As personal computers have become more and more commonplace in today's society, the demand for application software for use on personal computers has continued to increase. This increased demand has led to an increased number of software developers and a proliferation in the kind and number of application software programs. Further, in an effort to provide better products and gain or maintain a competitive advantage, software developers are continually enhancing existing programs.
However, with the proliferation of application software, and the resulting enhancement of existing programs, the user suffers the disadvantage that software becomes obsolete in a very short period of time. One significant contributing factor to this obsolescence is the development of new routines to enhance existing software. Although these new routines may comprise only a portion of the total software product, the user must purchase an entirely new software product to gain the benefit of the new routines. Accordingly, it is desirable to provide a software application program that can be readily modified by the user to include new routines without purchasing an entirely new main program.
Also, software developers currently face a dilemma when deciding whether to provide a large number of features, functions, and enhancements at a large price or to provide fewer features, functions, and enhancements at a lower price. It would be desirable to provide application software that could be sold in modular format so that the user can essentially customize the application program to include the features, functions, and enhancements desired. Accordingly, it is desirable to provide a method for enabling a user to readily customize an application program.
Still further, in an effort to further increase the popularity of their application software, software developers desire to provide software that is very easy to use. However, most existing methods for upgrading an application program require special expertise on the part of the person who is performing the upgrade. For this reason, many software designers currently release new versions of their software to provide the user with the most rudimentary upgrades. It is therefore desirable to provide a method and apparatus that will enable a user to easily upgrade software.